1 // Equipo Poncho, Carriel y Ruana
22 template <class T
> string
toStr(const T
&x
)
23 { stringstream s
; s
<< x
; return s
.str(); }
24 template <class T
> int toInt(const T
&x
)
25 { stringstream s
; s
<< x
; int r
; s
>> r
; return r
; }
27 #define For(i, a, b) for (int i=(a); i<(b); ++i)
28 #define foreach(x, v) for (typeof (v).begin() x = (v).begin(); x != (v).end(); ++x)
29 #define D(x) cout << #x " = " << (x) << endl;
31 const double EPS
= 1e-9;
33 int cmp(double x
, double y
= 0, double tol
= EPS
) {
34 return (x
<= y
+ tol
) ? (x
+ tol
< y
) ? -1 : 0 : 1;
37 #define INPUT_FILE "gas"
41 freopen(INPUT_FILE
".in", "r", stdin
);
44 vector
< pair
<long long, long long> > stations
;
46 while(cin
>> l
>> gases
) {
49 if(l
== 0 and gases
== 0) break;
50 for(long long i
=0; i
<gases
; i
++) {
57 stations
.push_back(make_pair(li
, ls
));
59 sort(stations
.begin(), stations
.end());
60 long long last_index
= 0;
62 for(long long i
= 0; i
<l
;) {
65 for(long long g
= last_index
; g
<stations
.size(); ++g
) {
66 if (stations
[g
].first
<= i
and stations
[g
].second
> i
) {
71 fin
= max(fin
, stations
[g
].second
);
73 if (stations
[g
].first
> i
) break;
83 if (found
) cout
<< gases
-usados
<< endl
;